xc2xa7 1.1 Field of the Invention
The present invention concerns improving access to stored blocks of data, and in particular, concerns improving access to stored blocks of scaled sub-pixel data that includes an offset value. Once accessed, these blocks of scaled sub-pixel data are subjected to subsequent processing to produce more legible text on flat panel video monitors such as liquid crystal display (or LCD) video monitors.
xc2xa7 1.2 Related Art
The present invention may be used in the context of flat panel video monitors, such as LCD video monitors. In particular, the present invention may be used as a part of processing to produce more legible text on LCD video monitors. Color display devices have become the principal display devices of choice for most computer users. The display of color on a monitor is normally achieved by operating the display device to emit light (such as a combination of red, green, and blue light for example) which results in one or more colors being perceived by the human eye.
Although color video monitors in general, and LCD video monitors in particular, are known to those skilled in the art, they are introduced below for the reader""s convenience. In xc2xa7 1.2.1 below, cathode ray tube (or CRT) video monitors are first introduced. Then, in xc2xa7 1.2.2 below, LCD video monitors are introduced.
xc2xa7 1.2.1 CRT VIDEO MONITORS
Cathode ray tube (CRT) display devices include phosphor coatings which may be applied as dots in a sequence on the screen of the CRT. A different phosphor coating is normally associated with the generation of different colors, such as red, green, and blue for example. Consequently, repeated sequences of phosphor dots are defined on the screen of the video monitor. When a phosphor dot is excited by a beam of electrons, it will generate its associated color, such as red, green and blue for example.
The term xe2x80x9cpixelxe2x80x9d is commonly used to refer to one spot in a group of spots, such as rectangular grid of thousands of such spots for example. The spots are selectively activated to form an image on the display device. In most color CRTs, a single triad of red, green and blue phosphor dots cannot be uniquely selected. Consequently, the smallest possible pixel size will depend on the focus, alignment and bandwidth of the electron guns used to excite the phosphor dots. The light emitted from one or more triads of red, green and blue phosphor dots, in various arrangements known for CRT displays, tend to blend together giving, at a distance, the appearance of a single colored light source.
In color displays, the intensity of the light emitted from the additive primary colors (such as red, green, and blue) can be varied to achieve the appearance of almost any desired color pixel. Adding no color, i.e., emitting no light, produces a black pixel. Adding 100 percent of all three colors produces a white pixel.
Having introduced color CRT video monitors, color LCD video monitors are now introduced in xc2xa7 1.2.2 below.
xc2xa7 1.2.2 LCD VIDEO MONITORS
Portable computing devices (also referred to generally as computing appliance or untethered computing appliances) often use liquid crystal displays (LCDs) or other flat panel display devices, instead of CRT displays. This is because flat panel displays tend to be smaller and lighter than CRT displays. In addition, flat panel displays are well suited for battery powered applications since they typically consume less power than comparably sized CRT displays.
Color LCD displays are examples of display devices which distinctly address elements (referred to herein as pixel sub-components or pixel sub-elements) to represent each pixel of an image being displayed. Normally, each pixel element of a color LCD display includes three (3) non-square elements. More specifically, each pixel element includes adjacent red, green and blue (RGB) pixel sub-components. Thus, a set of RGB pixel sub-components together define a single pixel element.
Known LCD displays generally include a series of RGB pixel sub-components which are commonly arranged to form stripes along the display. The RGB stripes normally run the entire length of the display in one direction. The resulting RGB stripes are sometimes referred to as xe2x80x9cRGB stripingxe2x80x9d. Common LCD monitors used for computer applications, which are wider than they are tall, tend to have RGB vertical stripes.
FIG. 1 illustrates a known LCD screen 100 comprising pixels arranged in a plurality of rows (R1-R12) and columns (C1-C16). That is, a pixel is defined at each row-column intersection. Each pixel includes a red pixel sub-component, depicted with moderate stippling, a green component, depicted with dense stippling, and a blue component, depicted with sparse stippling. FIG. 2 illustrates the upper left hand portion of the known display 100 in greater detail. Note how each pixel element, e.g., the (R1, C4) pixel element, comprises three distinct sub-element or sub-components, a red sub-component 206, a green sub-component 207 and a blue sub-component 208. Each known pixel sub-component 206, 207, 208 is ⅓, or approximately ⅓, the width of a pixel while being equal, or approximately equal, in height to the height of a pixel. Thus, when combined, the three ⅓ width, full height, pixel sub-components 206 , 207 , 208 define a single pixel element.
As illustrated in FIG. 1, one known arrangement of RGB pixel sub-components 206, 207, 208 form what appear to be vertical color stripes on the display 100. Accordingly, the arrangement of ⅓ width color sub-components 206, 207, 208, in the known manner illustrated in FIGS. 1 and 2, exhibit what is sometimes called xe2x80x9cvertical stripingxe2x80x9d.
In known systems, the RGB pixel sub-components are generally used as a group to generate a single colored pixel corresponding to a single sample of the image to be represented. More specifically, in known systems, luminous intensity values for all the pixel sub-components of a pixel element are generated from a single sample of the image to be represented. For example, referring to FIG. 3, an image is segmented into nine (9) squares by the grid 320. Each square of the grid defined by the segmented image represents an area of an image which is to be represented by a single pixel element. In FIG. 3, a shaded circle is used to represent a single image sample from which luminous intensity values associated with the red, green, and blue pixel sub-components 332, 333, and 334 of the associated pixel are generated.
Having introduced the general structure and operation of known LCD displays, known techniques for rendering text on such LCD displays, as well as perceived shortcomings of such known techniques, are introduced in xc2xa7 1.2.2.1 below.
xc2xa7 1.2.2.1 RENDERING TEXT ON LCD DISPLAYS
Apart from pure image or video information, LCD displays are often used for rendering textual information. For example, a personal information manager may be used to render contact information, such as a person""s address, telephone number, fax number, and e-mail address for example, on an untethered computing device. Character size and inter-character spacing are important factors when rendering text.
The expression of textual information using font sets is introduced in xc2xa7 1.2.2.1.1 below. Then, the rendering of textual information using so-called pixel precision and perceived shortcomings of doing so are introduced in xc2xa7 1.2.2.1.2 below. Finally, the desire to maintain formatting is described in xc2xa7 1.2.2.1.3 below.
xc2xa7 1.2.2.1.1 FONT SETS
Inter-character spacing, both relative and absolute, can significantly impact the perceived quality of text. In addition, inter-character spacing may affect the format (or layout) of a textual file, such as a word processing file for example.
Many modern computer systems use font outline technology, such as scalable fonts for example, to facilitate the rendering and display of text. In such systems various font sets, such as xe2x80x9cTimes New Roman,xe2x80x9d xe2x80x9cOnyx,xe2x80x9d xe2x80x9cCourier New,xe2x80x9d etc. for example, may be provided. The font set normally includes a high resolution outline representation, such as lines, points and curves for example, for each character which may be displayed using the provided font set. The stored outline character representation normally does not represent space beyond the maximum horizontal and vertical boundaries of the character (also referred to as xe2x80x9cwhite spacexe2x80x9d). Therefore, the stored character outline portion of a character font is often referred to as a black body (or BB). In addition to stored black body character outline information, a character font normally includes black body size, black body positioning, and overall character width information. Black body size information is sometimes expressed in terms of the dimensions of a bounding box used to define the vertical and horizontal borders of the black body.
Certain terms used to define a character are now defined with reference to FIG. 4, which illustrates the letters A and I 400. Box 408 is a bounding box which defines the size of the black body 407 of the character (A). The total width of the character (A), including white space to be associated with the character (A), is denoted by an advance width (or AW) value 402. The advance width typically starts to a point left of the bounding box 408. This point 404 is referred to as the left side bearing point (or LSBP). The left side bearing point 404 defines the horizontal starting point for positioning the character (A) relative to a current display position. The horizontal distance 410 between the left end of the bounding box 408 and the left side bearing point 404 is referred to as the left side bearing (or LSB). The left side bearing 410 indicates the amount of white space to be placed between the left end of the bounding box 408 of a current character (A) and the right side bearing point of the preceding character (not shown). The point 406 to the right of the bounding box 408 at the end of the advance width 402 is referred to as the right side bearing point (or RSBP). The right side bearing point 406 defines the end of the current character (A) and the point at which the left side bearing point 404xe2x80x2 of the next character (I) should be positioned. The horizontal distance 412 between the right end of the bounding box 408 and the right side bearing point 406 is referred to as the right side bearing (or RSB). The right side bearing 412 indicates the amount of white space to be placed between the right end of the bounding box 408 of a current character (A) and the left side bearing point 404xe2x80x2 of the next character (I).
As discussed above, a scalable font file normally includes black body size, black body positioning, and overall character width information for each supported character. The black body size information may include horizontal and vertical size information expressed in the form of bounding box 408 dimensions. The black body positioning information may expressed as a left side bearing value 410. Overall character width information may be expressed as an advance width 402.
xc2xa7 1.2.2.1.2 RENDERING TEXT TO PIXEL PRECISION
Most computer systems force the starting and ending points (Recall, for example, the left side bearing points and the right side bearing points, respectively) of characters being displayed to be positioned on pixel boundaries. In addition, such computer systems usually force or convert the black body width and the left side bearing to be integer multiples of the pixel size. In known implementations, these constraints are enforced by (i) scaling the size and positioning information included in a character font as a function of the point size to be used to display the character and (ii) then rounding the size and positioning values to integer multiples of the pixel size used in the particular display device. Using pixel size units as the minimum (or xe2x80x9catomicxe2x80x9d) distance unit produces what is called xe2x80x9cpixel precisionxe2x80x9d since the values are accurate to the size of one (1) pixel.
Rounding size and positioning values of character fonts to pixel precision introduces changes, or errors, into displayed images. Each of these errors may be up to xc2xd a pixel in size (assuming that values less than xc2xd a pixel are rounded down and values greater than or equal to xc2xd a pixel are rounded up). Thus, the overall width of a character may be less precise than desired since the character""s AW is (may be) rounded. In addition, the positioning of a character""s black body within the total horizontal space allocated to that character may be sub-optimal since the left side bearing is (may be) rounded. At small point sizes, the changes introduced by rounding using pixel precision can be significant.
xc2xa7 1.2.2.1.3 MAINTAINING FORMATTING
Minor changes in the spacing of characters found in an existing document can affect formatting. Such formatting changes may be significant and are often not anticipated by the user. For example, changes in overall character width may change line and page breaks causing text to wrap in unexpected ways and/or to extend over multiple pages where previously the text did not.
xc2xa7 1.2.3 UNMET NEEDS
In view of the errors introduced when rounding character values to pixel precision as introduced in xc2xa7 1.2.2.1.2 above, methods and apparatus to improve character spacing and positioning are needed to increase the legibility and perceived quality of text. It is desirable, from a backwards compatibility perspective, that at least some of the new methods and apparatus function to better position characters within predefined character spaces corresponding to those used in existing text files. In this manner, improvements in character positioning may be possible without affecting the formatting of existing documents.
The present invention includes methods, apparatus, and data structures for accessing oversampled sub-pixels, also referred to as xe2x80x9csource sub-pixelsxe2x80x9d, such that the blocks of source sub-pixels to be accessed are shifted to account for a left side bearing remainder in the final display of the character. The source sub-pixels are accessed, efficiently, in blocks (or chunks) corresponding to the over-sampling rate.